const service = require('../service/user.service')
const utils = require('../utils/utils')

// 校验等各种处理操作
const verifyRegister = async (ctx, next) => {
    // 1.获取用户名和密码
    const { userId, password } = ctx.request.body
    // 2.判断用户名和密码你能为空
    if (!userId || !password || userId === undefined || password === undefined) {
        return utils.emitError(ctx, '用户名或密码不能为空!')
    }
    // 3.判断用户名没被注册
    const result = await service.getUserById(userId)
    if (result.length) {
        return utils.emitError(ctx, '用户已注册!')
    }
    await next()
}

const verifyLogin = async (ctx, next) => {
    // 1.获取用户名和密码
    const { userId, password } = ctx.request.body
    // 2.查询对应的用户信息并校验用户登录信息
    const result = await service.getUserById(userId)
    if (!result.length) {
        return utils.emitError(ctx, '用户未注册!')
    }
    if (result[0].password !== password) {
        return utils.emitError(ctx, '账号或密码错误!')
    }
    await next()
}

// 用户列表查询校验
const verifyList = async (ctx, next) => {
    await next()
}

// 用户删除校验
const verifyDelete = async (ctx, next) => {
    const { userIds } = ctx.request.body
    // 批量查询所有，如果查询的比传入的少，说明有个别id不存在，则更新失败！
    const res = await service.searchAll(userIds)
    if (res.count !== userIds.length) {
        return utils.emitError(ctx, '删除失败！')
    }
    await next()
}

const verifyEdit = async (ctx, next) => {
    const { userId } = ctx.request.body
    // 编辑之前查询该用户是否存在
    const result = await service.getUserById(userId)
    if (!result.length) {
        return utils.emitError(ctx, '编辑失败,无此用户!')
    }
    await next()
}

module.exports = {
    verifyRegister,
    verifyLogin,
    verifyList,
    verifyDelete,
    verifyEdit
}